#pragma once

#include "Stimulus.h"

namespace SpikingNeuronLib
{
	public ref class TemplateList
	{
	private:
		List<Pattern^>^ _patterns;

		TemplateList^ GetDistinctPatterns();

	public:
		TemplateList();
		TemplateList(List<Pattern^>^ patterns);
		TemplateList(array<Pattern^>^ patterns);

		property int Count
		{
		public:
			int get()
			{
				return _patterns->Count;
			}
		}

		property List<Pattern^>^ Patterns
		{
		public:
			List<Pattern^>^ get()
			{
				return _patterns;
			}
		}

		property TemplateList^ DistinctPatterns
		{
		public:
			TemplateList^ get()
			{
				return GetDistinctPatterns();
			}
		}

		void Add(Pattern^ pattern);
	};
}